package cn.sccdlg.mybatis.dao;

import cn.sccdlg.mybatis.domain.QueryVo;
import cn.sccdlg.mybatis.domain.SysUser;
import cn.sccdlg.mybatis.domain.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author RaoShuang
 * @emil 991207823@qq.com
 * @date 2020/10/12 20:59
 * 用户的DAO层接口
 */
@Mapper
public interface UserDao {

    /**
     * 查询所有用户
     */
    List<User> findAll();

    /**
     * 保存用户
     * @param user 用户对象
     */
    void saveUser(User user);

    /**
     * 更新用户
     * @param user 用户对象
     */
    void updateUser(User user);

    /**
     * 根据Id删除用户
     * @param userId 用户id
     */
    void deleteUser(Integer userId);

    /**
     * 根据id查询用户信息
     * @param userId 用户ID
     * @return
     */
    User findById(Integer userId);

    /**
     * 根据名称模糊查询用户信息
     * @param username 用户名
     * @return
     */
    List<User> findByName(String username);

    /**
     * 根据名称模糊查询用户信息
     * @param username 用户名
     * @return
     */
    List<User> findByName2(String username);

    /**
     * 查询总用户数
     * @return
     */
    int findTotal();

    /**
     * 根据queryVo中的条件查询用户
     * @param vo
     * @return
     */
    List<User> findUserByVo(QueryVo vo);

    /**
     * 根据名称模糊查询用户信息
     * @param userName 用户名
     * @return SysUser类的实例化对象
     */
    List<SysUser> findByUserName(String userName);

    /**
     * 修改用户
     * @param user 用户对象
     * @return
     */
    int saveSysUser(SysUser user);
}
